package com.dragon.modules.yuegou.client.wechat_mini.client;

import com.dragon.modules.yuegou.client.wechat_mini.common.BaseResponse;
import com.dragon.modules.yuegou.client.wechat_mini.request.MediaCheckAsyncRequest;
import com.dragon.modules.yuegou.client.wechat_mini.response.MediaCheckAsyncResponse;

import java.io.File;

/**
 * 内容安全接口
 * 
 * @author liuwu
 *
 */
public interface SecurityClient {

	/**
	 * 校验一张图片是否含有违法违规内容。
	 * <p>
	 * 应用场景举例：<br>
	 * <br>
	 * 
	 * 图片智能鉴黄：涉及拍照的工具类应用(如美拍，识图类应用)用户拍照上传检测；电商类商品上架图片检测；媒体类用户文章里的图片检测等；<br>
	 * 敏感人脸识别：用户头像；媒体类用户文章里的图片检测；社交类用户上传的图片检测等。<br>
	 * 频率限制：单个 appId 调用上限为 2000次/分钟，200,000 次/天（图片大小限制：1M）<br>
	 * 
	 * @param accessToken 接口调用凭证
	 * @param file        需要鉴定的图片
	 * 
	 * @return 响应结果 0 表示内容正常，87014表示内容含有违法违规内容
	 */
	BaseResponse imgSecCheck(String accessToken, File file);

	/**
	 * 异步校验图片/音频是否含有违法违规内容。
	 * <p>
	 * 应用场景举例：<br>
	 * <br>
	 * 
	 * 语音风险识别：社交类用户发表的语音内容检测；<br>
	 * 图片智能鉴黄：涉及拍照的工具类应用(如美拍，识图类应用)用户拍照上传检测；电商类商品上架图片检测；媒体类用户文章里的图片检测等；<br>
	 * 敏感人脸识别：用户头像；媒体类用户文章里的图片检测；社交类用户上传的图片检测等。<br>
	 * 频率限制：单个 appId 调用上限为 2000次/分钟，200,000 次/天；<br>
	 * 文件大小限制：单个文件大小不超过10M
	 * 
	 * @param accessToken 接口调用凭证
	 * @param request     请求数据
	 * @return 成功返回任务ID，表示检测请求已接收，检测完成后微信会通过消息通知结果，应用程序通过任务ID匹配检测结果
	 */
	MediaCheckAsyncResponse mediaCheckAsync(String accessToken, MediaCheckAsyncRequest request);

	/**
	 * 检查一段文本是否含有违法违规内容。
	 * <p>
	 * 应用场景举例：<br>
	 * <br>
	 * 
	 * 用户个人资料违规文字检测； <br>
	 * 媒体新闻类用户发表文章，评论内容检测； <br>
	 * 游戏类用户编辑上传的素材(如答题类小游戏用户上传的问题及答案)检测等。<br>
	 * 频率限制：单个appId 调用上限为 4000 次/分钟，2,000,000 次/天<br>
	 * 
	 * @param accessToken 接口调用凭证
	 * @param content     要检测的文本内容，长度不超过 500KB
	 * @return 0 表示内容正常，87014表示内容含有违法违规内容
	 */
	BaseResponse msgSecCheck(String accessToken, String content);
}
